package java学习.算法.二叉树;

import java.util.HashMap;
import java.util.Scanner;

/**
 * **************
 * 项目名称: 蓝桥杯 <br/>
 * 文件名称:  <br/>
 * 文件描述: 这里添加您的类文件描述，说明当前文件要包含的功能。 <br/>
 * 文件创建：刘世锦 <br/>
 * 创建时间: 2022/5/8 <br/>
 *
 * @version v1.0 <br/>
 * @update [序号][日期YYYY-MM-DD][更改人姓名][变更描述]<br/>
 * *************
 */
public class 对称的二叉树 {
    class Info{
        boolean Isimage;
        boolean val;

        public Info(boolean Isimage, boolean val) {
            this.val = val;
            this.Isimage = Isimage;
        }
    }
    boolean isSymmetrical1(TreeNode pRoot) {
        if (pRoot==null){
            return  false;
        }
        if (pRoot.left==null&&pRoot.right==null){
            return true;
        }

        Info isimagee = Isimagee(pRoot,pRoot.val);
        return  isimagee.val && isimagee.Isimage ;
    }

    Info Isimagee(TreeNode pRoot,int val){
        boolean Isimage = false;
        boolean valueIs = false;
        if(pRoot == null){
            return new Info(Isimage, valueIs);
        }
        val = pRoot.val;
        Info left = Isimagee(pRoot.left,pRoot.left.val);
        Info right = Isimagee(pRoot.right,pRoot.right.val);
        if (left==null && right==null){
            return new Info(true, true);
        }
        if (left!=null && right!=null){

            if (left.val == right.val){
                valueIs = true;
                Isimage = true;

            }
        }

        return new Info(Isimage, valueIs);
    }



    public boolean isSymmetrical(TreeNode root) {
        return check(root, root);
    }
    boolean check(TreeNode a, TreeNode b) {
        if (a == null && b == null) return true;
        if (a == null || b == null) return false;
        if (a.val != b.val) return false;
        return check(a.left, b.right) && check(a.right, b.left);
    }

    public static void main(String[] args) {
        double sum=100,height=100;
        for(int i=1;i<=9;i++)//计算第一次落地到第九次落地再弹起小球经过多少米
        {
            height=height/2;
            sum=sum+height*2;  // 除了第一次只计算下落的路径，
            // 第二次开始 下落 和 弹起的路径 一样， 要算两次，
        }//循环结束，小球第十次落地
        height=height/2;//第十次弹起的高度，按题意此时不再计算
        System.out.println("第十次落地时的高度是："+height+"\n小球共经过："+sum+"米");

        System.out.println(solution(100,10));


        HashMap<Object, Object> NULL = new HashMap<>();

    }

    public static String solution(int a, int b){
        double sum = a;
        double c = a;
        if(b<0){
            return null;
        }
        if(b==0){
            return sum+"米";
        }
        while(b>0){
            c = c/2;
            sum=sum+c;
            b--;
        }

        return sum+"米";

    }
    }
